package day38.zuoye;

import java.util.ArrayList;
import java.util.List;

public class ImmutableClass {
    private List<String> data;

    public ImmutableClass(List<String> data) {
        // 构造函数用于创建一个不可变类的实例
        // 通过创建一个新的ArrayList对象并复制传入的数据来创建该对象的副本
        this.data = data;
    }

    public List<String> getData() {
        // 返回data的一个副本，而不是原始对象本身
        // 这样做可以确保客户端无法直接修改原始对象的数据
        return new ArrayList<>(this.data);
    }

    // 其他方法和逻辑...

    public static void main(String[] args) {
        List<String> originalData = new ArrayList<>();
        originalData.add("Data 1");
        originalData.add("Data 2");

        ImmutableClass immutableObj = new ImmutableClass(originalData);

        List<String> copiedData = immutableObj.getData();
        copiedData.add("Data 3");

        // 原始对象的数据不会受到影响
        System.out.println("Original data: " + immutableObj.getData()); // 输出: [Data 1, Data 2]
        System.out.println("Copied data: " + copiedData); // 输出: [Data 1, Data 2, Data 3]
        System.out.println("Original data: " + immutableObj.getData());
    }
}